Higher Order Ambisonics (HOA) represents three-dimensional sound. Other techniques are wave field synthesis (WFS) or channel based approaches like 22.2. In contrast to channel based methods, however, the HOA representation offers the advantage of being independent of a specific loudspeaker set-up. But this flexibility is at the expense of a decoding process which is required for the playback of the HOA representation on a particular loudspeaker set-up. Compared to the WFS approach, where the number of required loudspeakers is usually very large, HOA may also be rendered to set-ups consisting of only few loudspeakers. A further advantage of HOA is that the same representation can also be employed without any modification for binaural rendering to head-phones.
HOA is based on the representation of the spatial density of complex harmonic plane wave amplitudes by a truncated Spherical Harmonics (SH) expansion. Each expansion coefficient is a function of angular frequency, which can be equivalently represented by a time domain function. Hence, without loss of generality, the complete HOA sound field representation actually can be assumed to consist of O time domain functions, where O denotes the number of expansion coefficients. These time domain functions will be equivalently referred to as HOA coefficient sequences or as HOA channels in the following. An HOA representation can be expressed as a temporal sequence of HOA data frames containing HOA coefficients. The spatial resolution of the HOA representation improves with a growing maximum order N of the expansion. For the 3D case, the number of expansion coefficients O grows quadratically with the order N, in particular O=(N+1)2.
Complex Vector Space
Ambisonics have to deal with complex functions. Therefore, a notation is introduced which is based on complex vector spaces. It operates with abstract complex vectors, which do not represent real geometrical vectors known from the three-dimensional ‘xyz’ coordinate system. Instead, each complex vector describes a possible state of a physical system and is formed by column vectors in a d-dimensional space with d components xi and—according to Dirac—these column-oriented vectors are called ket vectors denoted as |x. In a d-dimensional space, an arbitrary |x is formed by its components xi and d orthonormal basis vectors |ei:
                                                                                                                                                                                                                x                          〉                                                =                                                  x                          1                                                                                                            ⁢                                          e                      1                                                        〉                                +                                                      x                    2                                    ⁢                                                                                e                      2                                        〉                                                  +                …                +                                  x                  d                                                                    ⁢                          e              d                                〉                =                              ∑                          i              =              1                        d                    ⁢                                          ⁢                                    x              i                        ⁢                                                                            e                  i                                〉                            .                                                          (        1        )            
Here, that d-dimensional space is not the normal ‘xyz’ 3D space.
The conjugate complex of a ket vector is called bra vector |x*=x|. Bra vectors represent a row-based description and form the dual space of the original ket space, the bra space.
This Dirac notation will be used in the following description for an Ambisonics related audio system.
The inner product can be built from a bra and a ket vector of the same dimension resulting in a complex scalar value. If a random vector |x is described by its components in an orthonormal vector basis, the specific component for a specific base, i.e. the projection of |x onto |ei, is given by the inner product:xi=x∥ei=x|ei.  (2)
Only one bar instead of two bars is considered between the bra and the ket vector.
For different vectors |x and |y in the same basis, the inner product is got by multiplying the bra x| with the ket of |y, so that:
                    〈                              x            ⁢                                        y              〉                                =                                                    ∑                                  i                  =                  1                                d                            ⁢                                                          ⁢                              〈                                                      x                    i                                    ⁢                                      e                    i                                    ⁢                                                                                ·                                                                        ∑                                                      j                            =                            1                                                    d                                                ⁢                                                                                                  ⁢                                                  y                          j                                                                                                                          ⁢                                      e                    j                                                  〉                                      =                                          ∑                                  i                  ,                                      j                    =                    1                                                  d                            ⁢                                                          ⁢                                                x                  i                  *                                ⁢                                  y                  j                                ⁢                                  〈                                                                                    e                        i                                            ⁢                                                                                                e                          j                                                〉                                                              =                                                                                            ∑                                                      i                            ,                                                          j                              =                              1                                                                                d                                                ⁢                                                                                                  ⁢                                                                              x                            i                            *                                                    ⁢                                                      y                            j                                                                                              =                                                                        ∑                                                      i                            ,                                                          j                              =                              1                                                                                d                                                ⁢                                                                                                  ⁢                                                                              y                            j                            *                                                    ⁢                                                                                    x                              i                                                        .                                                                                                                                                                                                      (        3        )            
If a ket of dimension m×1 and a bra vector of dimension 1×n are multiplied by an outer product, a matrix A with n rows and n columns is derived:A=|xy|.  (4)Ambisonics Matrices
An Ambisonics-based description considers the dependencies required for mapping a complete sound field into time-variant matrices. In Higher Order Ambisonics (HOA) encoding or decoding matrices, the number of rows (columns) is related to specific directions from the sound source or the sound sink.
At encoder side, a variant number of S sound sources are considered, where s=1, . . . , S. Each sound source s can have an individual distance rs from the origin, an individual direction Ωs=(Θs, Φs), where Θs describes the inclination angle starting from the z-axis and Φs describes the azimuth angle starting from the x-axis. The corresponding time dependent signal xs=(t) has individual time behaviour.
For simplicity, only the directional part is considered (the radial dependency would be described by Bessel functions). Then a specific direction Ωs is described by the column vector |Ynm(Ωs), where n represents the Ambisonics degree and m is the index of the Ambisonics order N. The corresponding values are running from m=1, . . . , N and n=−m, . . . , 0, . . . , m, respectively.
In general, the specific HOA description restricts the number of components O for each ket vector |Ynm(Ωs) in the 2D or 3D case depending on N:
                    O        =                  {                                                                                                                                        2                        ⁢                        N                                            +                      1                                        ,                                                                                        2                    ⁢                                                                                  ⁢                    D                                                                                                                                                                  (                                                  N                          +                          1                                                )                                            2                                        ,                                                                                        3                    ⁢                                                                                  ⁢                    D                                                                        .                                              (        5        )            
For more than one sound source, all directions are included if s individual vectors |Ynm(Ωs) of order n are combined. This leads to a mode matrix Ξ, containing OxS mode components, i.e. each column of E represents a specific direction:
                    Ξ        =                              [                                                                                                      Y                      0                      0                                        ⁡                                          (                                              Ω                        1                                            )                                                                                        …                                                                                            Y                      0                      0                                        ⁡                                          (                                              Ω                        S                                            )                                                                                                                                                              Y                      1                                              -                        1                                                              ⁡                                          (                                              Ω                        1                                            )                                                                                        …                                                                                            Y                      1                                              -                        1                                                              ⁡                                          (                                              Ω                        S                                            )                                                                                                                    ⋮                                                  ⋱                                                  ⋮                                                                                                                        Y                      N                      N                                        ⁡                                          (                                              Ω                        1                                            )                                                                                        …                                                                                            Y                      N                      N                                        ⁡                                          (                                              Ω                        S                                            )                                                                                            ]                    .                                    (        6        )            
All signal values are combined in the signal vector |x(kT), which considers the time dependencies of each individual source signal xs(kT), but sampled with a common sample rate of
      1    T    :
                                                    x            ⁡                          (              kT              )                                〉                =                              [                                                                                                      x                      1                                        ⁡                                          (                      kT                      )                                                                                                                                                              x                      2                                        ⁡                                          (                      kT                      )                                                                                                                    ⋮                                                                                                                        x                      S                                        ⁡                                          (                      kT                      )                                                                                            ]                    .                                    (        7        )            
In the following, for simplicity, in time-variant signals like |x(kT) the sample number k is no longer described, i.e. it will be neglected. Then |x is multiplied with the mode matrix Ξ as shown in equation (8). This ensures that all signal components are linearly combined with the corresponding column of the same direction Ωs, leading to a ket vector |as with O Ambisonics mode components or coefficients according to equation (5):|as=Ξ|x.  (8)
The decoder has the task to reproduce the sound field |al represented by a dedicated number of l loudspeaker signals |y. Accordingly, the loudspeaker mode matrix Ψ consists of L separated columns of spherical harmonics based unit vectors |Ynm(ΩL) (similar to equation (6)), i.e. one ket for each loudspeaker direction Ωl:|al=Ψ|y.  (9)
For quadratic matrices, where the number of modes is equal to the number of loudspeakers, |y can be determined by the inverted mode matrix Ψ. In the general case of an arbitrary matrix, where the number of rows and columns can be different, the loudspeaker signals |y can be determined by a pseudo inverse, cf. M. A. Poletti, “A Spherical Harmonic Approach to 3D Surround Sound Systems”, Forum Acusticum, Budapest, 2005. Then, with the pseudo inverse Ψ+ of Ψ:|y=Ψ+|al.  (10)
It is assumed that sound fields described at encoder and at decoder side are nearly the same, i.e. |as≈|al. However, the loudspeaker positions can be different from the source positions, i.e. for a finite Ambisonics order the real-valued source signals described by |x and the loudspeaker signals, described by |y are different. Therefore a panning matrix G can be used which maps |x on |y. Then, from equations (8) and (10), the chain operation of encoder and decoder is:|y=GΨ+Ξ|x.  (11)Linear Functional
In order to keep the following equations simpler, the panning matrix will be neglected until section “Summary of invention”. If the number of required basis vectors becomes infinite, one can change from a discrete to a continuous basis. Therefore, a function ƒ can be interpreted as a vector having an infinite number of mode components. This is called a ‘functional’ in a mathematical sense, because it performs a mapping from ket vectors onto specific output ket vectors in a deterministic way. It can be described by an inner product between the function ƒ and the ket |x, which results in a complex number c in general:
                              〈                      f            ❘                          (                              ❘                x                            〉                                )                =                                            ∑                              i                =                1                            N                        ⁢                                                  ⁢                                          f                i                            ·                              x                i                                              =                      c            .                                              (        12        )            
If the functional preserves the linear combination of the ket vectors, ƒ is called ‘linear functional’.
As long as there is a restriction to Hermitean operators, the following characteristics should be considered. Hermitean operators always have:                real Eigenvalues.        a complete set of orthogonal Eigen functions for different Eigenvalues.        
Therefore, every function can be build up from these Eigen functions, cf. H. Vogel, C. Gerthsen, H. O. Kneser, “Physik”, Springer Verlag, 1982. An arbitrary function can be represented as linear combination of spherical harmonics Ynm(θ,ϕ) with complex constants Cnm:
                              f          ⁡                      (                          θ              ,              ϕ                        )                          =                              ∑                          n              =              0                        ∞                    ⁢                                          ⁢                                    ∑                              m                =                                  -                  N                                            N                        ⁢                                                  ⁢                                          C                n                m                            ·                                                Y                  n                  m                                ⁡                                  (                                      θ                    ,                    ϕ                                    )                                                                                        (        13        )                                                      〈                                          f                ⁡                                  (                                      θ                    ,                    ϕ                                    )                                            |                                                Y                                      n                    ′                                                        m                    ′                                                  ⁡                                  (                                      θ                    ,                    ϕ                                    )                                                      〉                    =                                    ∫              0                              2                ⁢                π                                      ⁢                                          ∫                0                π                            ⁢                                                                    f                    ⁡                                          (                                              θ                        ,                        ϕ                                            )                                                        *                                ⁢                                                      Y                                          n                      ′                                                              m                      ′                                                        ⁡                                      (                                          θ                      ,                      ϕ                                        )                                                  ⁢                sin                ⁢                                                                  ⁢                θ                ⁢                                                                  ⁢                d                ⁢                                                                  ⁢                θ                ⁢                                                                  ⁢                d                ⁢                                                                  ⁢                                  ϕ                  .                                                                    ⁢                                                      (        14        )            
The indices n,m are used in a deterministic way. They are substituted by a one-dimensional index j, and indices n′,m′ are substituted by an index i of the same size. Due to the fact that each subspace is orthogonal to a subspace with different i,j, they can be described as linearly independent, orthonormal unit vectors in an infinite-dimensional space:
                              〈                                    f              ⁡                              (                                  θ                  ,                  ϕ                                )                                      |                                          Y                i                            ⁡                              (                                  θ                  ,                  ϕ                                )                                              〉                =                              ∫            0                          2              ⁢              π                                ⁢                                    ∫              0              π                        ⁢                                                            (                                                            ∑                                              j                        =                        0                                            ∞                                        ⁢                                                                                  ⁢                                                                  C                        j                                            ⁢                                                                        Y                          j                                                ⁡                                                  (                                                      θ                            ,                            ϕ                                                    )                                                                                                      )                                *                            ⁢                                                Y                  i                                ⁡                                  (                                      θ                    ,                    ϕ                                    )                                            ⁢              sin              ⁢                                                          ⁢              θ              ⁢                                                          ⁢              d              ⁢                                                          ⁢              θ              ⁢                                                          ⁢              d              ⁢                                                          ⁢                              ϕ                .                                                                        (        15        )            
The constant values of Cj can be set in front of the integral:
                              〈                                    f              ⁡                              (                                  θ                  ,                  ϕ                                )                                      |                                          Y                i                            ⁡                              (                                  θ                  ,                  ϕ                                )                                              〉                =                              ∑                          j              =              0                        ∞                    ⁢                                          ⁢                                    C              j              *                        ⁢                                          ∫                0                                  2                  ⁢                  π                                            ⁢                                                ∫                  0                  π                                ⁢                                                                            Y                      j                      *                                        ⁡                                          (                                              θ                        ,                        ϕ                                            )                                                        ⁢                                                            Y                      i                                        ⁡                                          (                                              θ                        ,                        ϕ                                            )                                                        ⁢                  sin                  ⁢                                                                          ⁢                  θ                  ⁢                                                                          ⁢                  d                  ⁢                                                                          ⁢                  θ                  ⁢                                                                          ⁢                  d                  ⁢                                                                          ⁢                                      ϕ                    .                                                                                                          (        16        )            
A mapping from one subspace (index j) into another subspace (index i) requires just an integration of the harmonics for the same indices i=j as long as the Eigenfunctions Yj and Yi are mutually orthogonal:
                              〈                                    f              ⁡                              (                                  θ                  ,                  ϕ                                )                                      |                                          Y                i                            ⁡                              (                                  θ                  ,                  ϕ                                )                                              〉                =                              ∑                          j              =              0                        ∞                    ⁢                                          ⁢                                    C              j              *                        ⁢                                          〈                                                                            Y                      j                                        ⁡                                          (                                              θ                        ,                        ϕ                                            )                                                        |                                                            Y                      i                                        ⁡                                          (                                              θ                        ,                        ϕ                                            )                                                                      〉                            .                                                          (        17        )            
An essential aspect is that if there is a change from a continuous description to a bra/ket notation, the integral solution can be substituted by the sum of inner products between bra and ket descriptions of the spherical harmonics. In general, the inner product with a continuous basis can be used to map a discrete representation of a ket based wave description |x into a continuous representation. For example, x(ra) is the ket representation in the position basis (i.e. the radius)ra: x(ra)=ra|x.  (18)
Looking onto the different kinds of mode matrices Ψ and Ξ, the Singular Value Decomposition is used to handle arbitrary kind of matrices.
Singular Value Decomposition
A singular value decomposition (SVD, cf. G. H. Golub, Ch. F. van Loan, “Matrix Computations”, The Johns Hopkins University Press, 3rd edition, 11. October 1996) enables the decomposition of an arbitrary matrix A with m rows and n columns into three matrices U, Σ, and V†, see equation (19). In the original form, the matrices U and V† are unitary matrices of the dimension m×m and n×n, respectively. Such matrices are orthonormal and are build up from orthogonal columns representing complex unit vectors |ui and |vi†=vi|, respectively. Unitary matrices from the complex space are equivalent with orthogonal matrices in real space, i.e. their columns present an orthonormal vector basis:A=UΣV†.  (19)
The matrices U and V contain orthonormal bases for all four subspaces.                first r columns of U:column space of A        last m−r columns of U:nullspace of A†        first r columns of V:row space of A        last n−r columns of V:nullspace of A        
The matrix Σ contains all singular values which can be used to characterize the behaviour of A. In general, Σ is a m by n rectangular diagonal matrix, with up to r diagonal elements σi, where the rank r gives the number of linear independent columns and rows of A(r≤min(m,n)). It contains the singular values in descent order, i.e. in equations (20) and (21) σ1 has the highest and σr the lowest value.
In a compact form only r singular values, i.e., r columns of U and r rows of V†, are required for reconstructing the matrix A. The dimensions of the matrices U, Σ, and V† differ from the original form. However, the Σ matrices get always a quadratic form. Then, for m>n=r
                                                        [                                                                                          *                                                                                          *                                                                                          *                                                                                          *                                                                                                                                  *                                                                                          *                                                                                          *                                                                                                                                  *                                                                                          *                                                                                          *                                                                                                            A                                                                                                              *                                                                                          *                                                                                          *                                                                                                                                  *                                                                                          *                                                                                          *                                                                                                                                  *                                                                                          *                                                                                          *                                                                                  ]                        mxn                    =                                                    [                                                                                                    *                                                                                                  *                                                                                                  *                                                                                                  *                                                                                                                                                *                                                                                                  *                                                                                                  *                                                                                                                                                *                                                                                                  *                                                                                                  *                                                                                                                        U                                                                                                                          *                                                                                                  *                                                                                                  *                                                                                                                                                *                                                                                                  *                                                                                                  *                                                                                                                                                *                                                                                                  *                                                                                                  *                                                                                            ]                            mxn                        ·                                                                                [                                                                                                                        σ                            1                                                                                                    0                                                                          •                                                                          •                                                                                                                      0                                                                                                      σ                            2                                                                                                    0                                                                          •                                                                                                                      0                                                                          0                                                                          •                                                                          0                                                                                                                      •                                                                          •                                                                          0                                                                                                      σ                            r                                                                                                                ]                                    nxn                                ⁡                                  [                                                                                                              *                                                                                                          *                                                                                                          *                                                                                                          *                                                                                                                                                              *                                                                                                          *                                                                                                          *                                                                                                                                                              V                          †                                                                                                                                                              *                                                                                                          *                                                                                                          *                                                                                                      ]                                            nxn                                      ,                            (        20        )            and for n>m=r
                                          [                                                                                *                                                                                  *                                                                                  *                                                                                  *                                                                                  *                                                                                  *                                                                                  *                                                                                                                    *                                                                                  *                                                                                  *                                                                                  *                                                                                  *                                                                                  *                                                                                                A                                                                                                  *                                                                                  *                                                                                  *                                                                                  *                                                                                  *                                                                                  *                                                                        ]                    mxn                =                                            [                                                                                          *                                                                                          *                                                                                          *                                                                                          *                                                                                                                                  *                                                                                          *                                                                                          *                                                                                                            U                                                                                                              *                                                                                          *                                                                                          *                                                                                  ]                        mxn                    ·                                                                                          [                                                                                                                        σ                            1                                                                                                    0                                                                          •                                                                          •                                                                                                                      0                                                                                                      σ                            2                                                                                                    0                                                                          •                                                                                                                      0                                                                          0                                                                          •                                                                          0                                                                                                                      •                                                                          •                                                                          0                                                                                                      σ                            r                                                                                                                ]                                    mxn                                ⁡                                  [                                                                                                              *                                                                                                          *                                                                                                          *                                                                                                          *                                                                                                          *                                                                                                          *                                                                                                          *                                                                                                                                                              *                                                                                                          *                                                                                                          *                                                                                                          *                                                                                                          *                                                                                                          *                                                                                                                                                              V                          †                                                                                                                                                              *                                                                                                          *                                                                                                          *                                                                                                          *                                                                                                          *                                                                                                          *                                                                                                      ]                                            mxn                        .                                              (        21        )            
Thus the SVD can be implemented very efficiently by a low-rank approximation, see the above-mentioned Golub/van Loan textbook. This approximation describes exactly the original matrix but contains up to r rank-1 matrices. With the Dirac notation the matrix A can be represented by r rank-1 outer products:A=Σi=1rσi|uivi|.  (22)
When looking at the encoder decoder chain in equation (11), there are not only mode matrices for the encoder like matrix Ξ but also inverses of mode matrices like matrix Ψ or another sophisticated decoder matrix are to be considered. For a general matrix A, the pseudo inverse A+ of A can be directly examined from the SVD by performing the inversion of the square matrix Σ and the conjugate complex transpose of U and V†, which results to:A+=VΣ−1U†.  (23)For the vector based description of equation (22), the pseudo inverse A+ is got by performing the conjugate transpose of |ui and vi|, whereas the singular values σi have to be inverted. The resulting pseudo inverse looks as follows:
                              A          +                =                              ∑                          i              =              1                        r                    ⁢                                          ⁢                                    (                              1                                  σ                  i                                            )                        ⁢                                                        v                i                            〉                        ⁢                                          〈                                  u                  i                                                            .                                                          (        24        )            
If the SVD based decomposition of the different matrices is combined with a vector based description (cf. equations (8) and (10)) one gets for the encoding process:
                                                    a            s                    〉                =                                            ∑                                                s                  i                                =                1                                            r                s                                      ⁢                                                  ⁢                                          σ                                  s                  i                                            ⁢                                                                u                                      s                    i                                                  〉                            ⁢                              〈                                                      v                                          S                      i                                                        ⁢                                                          ·                                                        ⁢                  x                                〉                                              =                                    ∑                                                s                  i                                =                1                                            r                s                                      ⁢                                                  ⁢                                          σ                                  s                  i                                            ⁢                                                                u                                      s                    i                                                  〉                            ⁢                              〈                                                                            v                                              s                        i                                                              ⁢                                                                x                      〉                                                        ,                                                                                        (        25        )            
and for the decoder when considering the pseudo inverse matrix Ψ+ (equation (24)):
                                        y          〉                =                              (                                          ∑                                                      l                    i                                    =                  1                                                  r                  l                                            ⁢                                                          ⁢                                                (                                      1                                          σ                                              l                        i                                                                              )                                ⁢                                                                        v                                          l                      i                                                        〉                                ⁢                                  〈                                      u                                          l                      i                                                                                                              )                    ⁢                                                                  a                l                            〉                        .                                              (        26        )            
If it is assumed that the Ambisonics sound field description |as from the encoder is nearly the same as |al for the decoder, and the dimensions rs=rl=r, than with respect to the input signal |x and the output signal |y a combined equation looks as follows:
                                        y          〉                =                              (                                          ∑                                                      l                    i                                    =                  1                                r                            ⁢                                                          ⁢                                                (                                      1                                          σ                                              l                        i                                                                              )                                ⁢                                                                        v                                          l                      i                                                        〉                                ⁢                                  〈                                      u                                          l                      i                                                                                                              )                    ⁢                                    ∑                                                s                  i                                =                1                            r                        ⁢                                                  ⁢                                          σ                                  s                  i                                            ⁢                                                                u                                      s                    i                                                  〉                            ⁢                              〈                                                      v                                          s                      i                                                        ⁢                                                                                  x                      〉                                        .                                                                                                          (        27        )            